package com.ae.shield.common.tag;

import net.minecraft.tags.BlockTags;
import net.minecraft.tags.FluidTags;
import net.minecraft.tags.ItemTags;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.Tags;

public class ModTags {
    //forge 标签
    public static class Forge {
        //流体
        public static class Fluid {
            public static final Tags.IOptionalNamedTag<net.minecraft.fluid.Fluid> NITROGEN = tag("nitrogen");

            private static Tags.IOptionalNamedTag<net.minecraft.fluid.Fluid> tag(String name) {
                return FluidTags.createOptional(new ResourceLocation("forge", name));
            }
        }

        //物品
        public static class Item {
            //矿石
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> ORES_TIN = tag("ores/tin");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> ORES_LEAD = tag("ores/lead");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> ORES_ALUMINUM = tag("ores/aluminum");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> ORES_SILVER = tag("ores/silver");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> ORES_MANGANESE = tag("ores/manganese");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> ORES_TANTALUM = tag("ores/tantalum");
            //粒
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> NUGGETS_ENDERIUM = tag("nuggets/enderium");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> NUGGETS_NANO = tag("nuggets/nano");
            //线
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> WIRES_IRON = tag("wires/iron");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> WIRES_GOLD = tag("wires/gold");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> WIRES_NANO = tag("wires/nano");
            //粉
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> DUSTS_IRON = tag("dusts/iron");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> DUSTS_ALUMINUM = tag("dusts/aluminum");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> DUSTS_SILVER = tag("dusts/silver");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> DUSTS_GOLD = tag("dusts/gold");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> DUSTS_TANTALUM = tag("dusts/tantalum");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> DUSTS_MANGANESE = tag("dusts/manganese");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> DUSTS_ENDERIUM = tag("dusts/enderium");
            //锭
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> INGOTS_TIN = tag("ingots/tin");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> INGOTS_LEAD = tag("ingots/lead");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> INGOTS_ALUMINUM = tag("ingots/aluminum");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> INGOTS_SILVER = tag("ingots/silver");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> INGOTS_MANGANESE = tag("ingots/manganese");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> INGOTS_TANTALUM = tag("ingots/tantalum");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> INGOTS_ENDERIUM = tag("ingots/enderium");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> INGOTS_NANO = tag("ingots/nano");
            //板
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> PLATES_LEAD = tag("plates/lead");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> PLATES_IRON = tag("plates/iron");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> PLATES_GOLD = tag("plates/gold");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> PLATES_DENSE_LEAD = tag("plates/dense/lead");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> PLATES_ENDERIUM = tag("plates/enderium");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> PLATES_DENSE_ENDERIUM = tag("plates/dense/enderium");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> PLATES_NANO = tag("plates/nano");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> PLATES_DENSE_NANO = tag("plates/dense/nano");
            //电路板
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> CIRCUITS_BASIC = tag("circuits/basic");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> CIRCUITS_ADVANCED = tag("circuits/advanced");
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> CIRCUITS_ELITE = tag("circuits/elite");

            private static Tags.IOptionalNamedTag<net.minecraft.item.Item> tag(String name) {
                return ItemTags.createOptional(new ResourceLocation("forge", name));
            }
        }

        //方块
        public static class Block {
            public static final Tags.IOptionalNamedTag<net.minecraft.block.Block> ORES_TIN = tag("ores/tin");
            public static final Tags.IOptionalNamedTag<net.minecraft.block.Block> ORES_LEAD = tag("ores/lead");
            public static final Tags.IOptionalNamedTag<net.minecraft.block.Block> ORES_ALUMINUM = tag("ores/aluminum");
            public static final Tags.IOptionalNamedTag<net.minecraft.block.Block> ORES_SILVER = tag("ores/silver");
            public static final Tags.IOptionalNamedTag<net.minecraft.block.Block> ORES_MANGANESE = tag("ores/manganese");
            public static final Tags.IOptionalNamedTag<net.minecraft.block.Block> ORES_TANTALUM = tag("ores/tantalum");

            private static Tags.IOptionalNamedTag<net.minecraft.block.Block> tag(String name) {
                return BlockTags.createOptional(new ResourceLocation("forge", name));
            }
        }
    }

    public static class Mod{
        public static class Item {
            //绝缘材料（塑料）
            public static final Tags.IOptionalNamedTag<net.minecraft.item.Item> PLASTIC = tag("plastic");

            private static Tags.IOptionalNamedTag<net.minecraft.item.Item> tag(String name) {
                return ItemTags.createOptional(new ResourceLocation("aeshield", name));
            }
        }
    }
}
